<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>闭包</title>
</head>

<body>
    <script>
        /*
                  有权限访问函数内部的变量，叫闭包(函数内套一个函数)
                  特点:
                  1.有权限访问函数内部的变量
                  2.延长生命周期
                  3.不会因为全局同名变量受污染

                  释放: a=null 
                */
        function setname() {
            //局部变量
            var name_ = "李四";
            return function() {
                return name_;
            };
        }
        var a = setname();
        console.log(a());
        //  a=null //释放

        /*
         普通全局变量
        var total = 0;//全局变量
        function add(t) {
          total += t;
          alert(total);
        }
        total = 2;
        add(3); //显示5
        add(5); //显示10
        add(1); //显示11*/
        var total = 1000;
        //闭包
        function add() {
            //局部变量
            var total = 2;
            return function(t) {
                total += t;
                alert(total)
            }
        }
        var totalAll = add();
        totalAll(3);
        totalAll(5);
        totalAll(1);
    </script>
</body>

</html>